package org.example.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @Component 将当前类的实例纳入到容器中；
 * @PropertySource 作用是读取外部 properties的属性文件，将配置文件的内容读取到 容器中。
 * @@ConfigurationProperties 他本身是没有将类的实例纳入到IOC容器的能力，能够将IOC容器中属性注入到应
 *   被纳入到IOC容器中的Bean的属性中。
 *
 * 项目一旦启动，AppProperties就会被纳入到IOC容器中，并且 "app.properties" 这个配置文件的信息也被读取到 jwt属性中。
 */
@Data
@Component
@PropertySource(value = "classpath:app.properties", encoding = "UTF-8")  // 读取外部配置文件
@ConfigurationProperties(prefix = "app")
public class AppProperties {

    private Jwt jwt = new Jwt();

    @Data
    public class Jwt {
        private String key;
        // 配置中的 “-” 中划线，在属性中可以写成驼峰式命名法的形式
        private long expireTime;
    }
}
